package com.simple.relaxed.anno;

import java.lang.annotation.*;

/**
 * 使用此注解，被标记的类，在程序启动时，则会被注入到指定的Manager中，集中管理
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
public @interface Mark {

    /**
     * 若被管理的类有特殊的实例化方式，则标记实例化的方法，否则将使用模式的方式实例化获取对象
     * 注：默认方法实例化时，被标记的类，必须要有一个午餐的构造方法
     *
     * @return 获取指定类对象的方法
     */
    String methodName() default "";

    /**
     * 若同一个类有多个实现类，则不同的实现类注入时，须使用此对象，指定在Manager中的绑定值
     *
     * @return 在Manager中的绑定值
     */
    String bindName() default "";
}
